package com.zjsru.plan2023.oneday.oneDay202302;

/**
 * @Author: CookLee
 * @Date: 2023/2/27
 * 递减元素使数组呈锯齿状
 * 每个偶数索引对应的元素都大于相邻的元素，即 A[0] > A[1] < A[2] > A[3] < A[4] > ...
 * 或者，每个奇数索引对应的元素都大于相邻的元素，即 A[0] < A[1] > A[2] < A[3] > A[4] < ...
 *
 * 输入：nums = [1,2,3]
 * 输出：2
 * 解释：我们可以把 2 递减到 0，或把 3 递减到 1。
 *
 * 输入：nums = [9,6,1,6,2]
 * 输出：4
 */
public class MovesToMakeZigzag {
    
    public int movesToMakeZigzag(int[] nums) {
        //对比 奇偶数 的不同
        return Math.min(this.helper(nums, 0), this.helper(nums, 1));
    }
    
    private int helper(int[] nums, int i) {
        int res = 0;
        for (int j = i; j < nums.length; j += 2) {
            int a = 0;
            if (j - 1 >= 0) {
                a = Math.max(a, nums[j] - nums[j - 1] + 1);
            }
            if (j + 1 < nums.length) {
                a = Math.max(a, nums[j] - nums[j + 1] + 1);
            }
            res += a;
        }
        return res;
    }
    
    public static void main(String[] args) {
        MovesToMakeZigzag movesToMakeZigzag = new MovesToMakeZigzag();
        int[] nums = new int[] {1, 2, 3};
        System.out.println(movesToMakeZigzag.movesToMakeZigzag(nums));
    }
}
